package com.itheima.ydd.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.ydd.common.PageResult;
import com.itheima.ydd.common.ResultData;
import com.itheima.ydd.common.Y;
import com.itheima.ydd.entity.YddCate;
import com.itheima.ydd.entity.YddTag;
import com.itheima.ydd.service.IYddTagService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author author
 * @since 2022-05-22
 */
@Slf4j
@RestController
@RequestMapping("/ydd_tag")
public class YddTagController {

    @Autowired
    private IYddTagService yddTagService;

    /**
     * 根据id查询(回显)
     * @param id
     * @return
     */
    @GetMapping("/rowInfo")
    public ResultData rowInfo(String id) {

        return ResultData.ok(yddTagService.getById(id));
    }

    /**
     * 内容管理/标签管理-分页查询
     * @param tagname
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public ResultData page(String tagname, Integer page, Integer limit){
//    public Y<Page> page(@RequestParam("tagname") String tagName, Integer page, Integer limit){
        log.info("内容管理/标签管理-分页查询 ...");

        //创建分页构造器
        Page<YddTag> yddTagPage = new Page<>(page, limit);

        //创建条件查询对象
        LambdaQueryWrapper<YddTag> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(StringUtils.isNotEmpty(tagname), YddTag::getTagname, tagname);

        //查询
        yddTagService.page(yddTagPage, queryWrapper);

//        return ResultData.ok(yddTagPage);
        return ResultData.ok(PageResult.init(yddTagPage));
    }

    /**
     * 内容管理/标签管理-添加
     * @param tag
     * @return
     */
    @PostMapping("/add")
    public ResultData add(@RequestBody YddTag tag) {
        log.info("内容管理/标签管理-添加 ...");

        yddTagService.save(tag);

        return ResultData.ok("添加成功");
    }

    /**
     * 内容管理/标签管理-修改
     * @param tag
     * @return
     */
    @PostMapping("/update")
    public ResultData update(@RequestBody YddTag tag){
        log.info("内容管理/标签管理-修改 ...");

        yddTagService.updateById(tag);

        return ResultData.ok("修改成功");
    }

    /**
     * 内容管理/标签管理-删除
     * @param id
     * @return
     */
    @GetMapping("/del")
    public ResultData delete(Integer id){
        log.info("内容管理/标签管理-删除 ...");

        //条件查询
        LambdaQueryWrapper<YddTag> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(YddTag::getId, id);

        yddTagService.remove(queryWrapper);

        return ResultData.ok("删除成功");
    }

    //-------------------------------------------------
    @GetMapping("/all")
    public ResultData all(){
        log.info("内容管理/标签管理-分类查询 ...");

        List<YddTag> tagList = yddTagService.list();

        return ResultData.ok(tagList);
    }



}
